Mô hình khách-phục vụ và tính năng xuyên dụng mạng Hệ_thống_X_Window

X sử dụng mô hình khách-phục vụ (client-server): một trình phục vụ X có thể liên lạc với nhiều trình khách khác nhau. Trình phục vụ (hay trình chủ) thu nhận các yêu cầu xuất hiển thị đồ họa (các cửa sổ) và hồi âm thông tin vào của người dùng (từ bàn phím, chuột, hay màn hình cảm ứng (touchscreen)). Trình phục vụ có thể đóng một trong các vai trò sau:

  • là một trình ứng dụng hiển thị trên một cửa sổ của một hệ thống hiển thị khác.
  • là một chương trình hệ thống (system program) điều khiển việc phát hình của một máy tính cá nhân.
  • là một phần cứng chuyên dụng.

Với thuật ngữ "khách-phục vụ" (client-server) được dùng ở đây phải hiểu theo cách – thiết bị đầu cuối của người dùng là "trình phục vụ", còn các ứng dụng từ xa lại là "trình khách" – quan niệm này thường gây sự khó hiểu cho những người mới dùng X, vì các từ có vẻ như bị đảo ngược. X chọn chỗ đứng của mình từ góc độ của chương trình ứng dụng, hơn là từ góc độ của người dùng, hay từ góc độ của phần cứng. Phần hiển thị địa phương của X cung cấp các dịch vụ hiển thị cho chương trình ứng dụng, và vì vậy nó hành động như một trình phục vụ. Bất cứ một chương trình ứng dụng từ xa nào dùng các dịch vụ này của nó, sẽ hành xử như một trình khách.

Trong thí dụ này, trình phục vụ X nhận dữ liệu từ bàn phím và chuột, hiển thị lên một màn hình. Một trình duyệt Web và một chương trình mô phỏng thiết bị đầu cuối (terminal emulator) chạy trên máy trạm của người dùng, và một bộ cập nhật hệ thống chạy trên một trình phục vụ ở xa nhưng được điều phối từ máy của người dùng. Nên lưu ý rằng trình ứng dụng ở xa hoạt động như thể nó được chạy tại máy ở địa phương.

Giao thức truyền thông giữa trình phục vụ và trình khách vận hành với tính năng xuyên dụng mạng: trình phục vụ và trình khách có thể cùng hoạt động trên cùng một máy tính hoặc trên các máy tính khác nhau với các kiến trúc và hệ điều hành có thể khác nhau. Nhưng trong trường hợp nào chúng cũng vận hành như nhau. Trình phục vụ và trình khách thậm chí còn có thể liên lạc với nhau một cách bảo mật qua Internet bằng cách dùng giao thức đường hầm (tunneling) cho kết nối qua một phiên mạng (network session) được mã hóa.

Để khởi động một trình khách từ xa hiển thị tại một trình phục vụ địa phương, thông thường, người dùng sẽ mở một cửa sổ đầu cuối và dùng telnet hay ssh để kết nối với máy tính ở xa, ra lệnh cho nó hiển thị tại máy của người dùng (ví dụ, gọi câu lệnh export DISPLAY[máy của người dùng]:0 trên màn hình của máy từ xa - máy đang chạy trình bao BASH), sau đó, khởi động trình khách (ở máy tính từ xa). Trình khách khi đó sẽ kết nối với trình phục vụ tại máy địa phương và trình ứng dụng từ xa sẽ hiển thị tại máy địa phương, tiếp nhận dữ liệu vào thu được từ các thiết bị nhập dữ liệu tại địa phương. Một cách khác là, máy địa phương có thể chạy một chương trình giúp đỡ nhỏ để nối tới một máy từ xa và khởi động ứng dụng khách mà người dùng mong muốn tại đó.

Những thí dụ thực tế về các trình khách từ xa bao gồm:

  • quản trị một máy từ xa bằng đồ họa
  • chạy một chương trình mô phỏng đòi hỏi năng lực tính toán cao trên một máy Unix ở xa và hiển thị kết quả trên một máy tính địa phương dùng hệ điều hành Windows.
  • chạy phần mềm đồ họa trên nhiều máy tính cùng một lúc, kiểm soát hoạt động của chúng bằng một màn hình duy nhất, một bàn phím, và một con chuột.

Tài liệu tham khảo

WikiPedia: Hệ_thống_X_Window http://www.cat.org.au/maffew/cat/xfree-dawes.html http://www.apple.com/macosx/features/x11/ http://ptlo.blogspot.com/2005/12/gnome-vs-kde-hist... http://cbbrowne.com/info/x11r6.4.html http://cbbrowne.com/info/xbloat.html http://www.computerworld.com/softwaretopics/softwa... http://cygwin.com/ml/cygwin-xfree/2003-10/msg00328... http://www.dwheeler.com/essays/gpl-compatible.html... http://h30097.www3.hp.com/docs/dev_doc/DOCUMENTATI... http://keithp.com/~keithp/talks/Xarchitecture/Talk...